Various communication systems exist for establishing a live, packet-based voice or video call over a packet-based network such as the Internet. For example such systems may use VoIP (voice-over internet protocol) technology. One popular type of communication system is built on a peer-to-peer (P2P) topology. In a traditional P2P system, each end-user installs a communication client application on his or her respective user terminal (e.g. desktop or laptop computer, tablet or handheld mobile phone). Each user then registers with a server of the P2P provider to obtain an authentication certificate. Some of the users' terminals will also become nodes of a distributed database mapping usernames of the users within the P2P communication system to addresses of the various user terminals within the network over which the system is implemented (typically IP addresses). Communications between end-users can then proceed without the involvement of a centralized server in the call set-up or authentication process. Instead, the client on the terminal of a caller queries one or more nodes of the distributed database (i.e. one or more terminals of other end-users, not necessarily themselves in any other way involved in the call) in order to determine the address of the intended callee's terminal. The caller then uses the determined address to send a call invite to the callee, and the callee responds with a call acceptance response. The caller and callee exchange their authentication certificates in order to authenticate one another.
Each user also maintains a contact list, which may be stored on a server of the P2P provider so that it is available even if the user logs on to a different terminal. Other secondary information such as profile information for each user (e.g. an avatar image or mood message) may also be stored on a server. Further, the client applications also exchange presence information with one another. The presence information indicates an availability status of the user, and is preferably defined at least in part by the user him- or herself. For example the presence may indicate whether the user is offline, online but has selected not to be available (“do not disturb”), or online and selected to be available. For example each client may periodically poll each of the contacts in its contact list to determine their respective presence, and/or each client may periodically send out presence updates to each of the contacts in its list. The presence is typically signalled directly between end users based on the P2P technique, rather than via a server. When making a call, the caller's client determines whether the callee is available to accept the call based on the most up-to-date presence information.